<%@ page contentType="text/javascript" pageEncoding="UTF-8" %>
<%@ page import="util.*" %>
<%@ page import="entidades.*" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.HashMap" %>

// <script>

var ordenVenta;

jQuery(document).ready(function()
    {
	// -------------------------- //
	// ----- Orden de venta ----- //
	// -------------------------- //

	ordenVenta = jQuery("#form_abm");

	// El campo del logotipo muestra sugerencias.
	jQuery(ordenVenta).find("input[name='logotipo']" ).autocomplete({source: [
		<% {
		boolean primero = true;
		List<Logotipo> logotipos = Logotipo.listar();

		for(int i=0; i<logotipos.size(); i++)
			{
			if(!logotipos.get(i).isFantasia())
				{
				if(!primero) out.println(","); else primero = false;
				out.print("\"" + logotipos.get(i).getDescripcion().replace("\"", "\\\"") + "\"");
				}
			} %>
		]});

	jQuery(ordenVenta).find("input[name='logotipo_fantasia']" ).autocomplete({source: [
		<%
		primero = true;
		for(int i=0; i<logotipos.size(); i++)
			{
			if(logotipos.get(i).isFantasia())
				{
				if(!primero) out.println(","); else primero = false;
				out.print("\"" + logotipos.get(i).getDescripcion().replace("\"", "\\\"") + "\"");
				}
			}
		} %>
		] });

	// Al presionar el checkbox de fantasia, se cambian las sugerencias del campo logotipo y se autocompleta el Sales Order.
	if( jQuery(ordenVenta).find("input[name='fantasia']").length > 0)
		{
		jQuery(ordenVenta).find("input[name='fantasia']").change(function()
			{
                        if(jQuery(this).attr('checked'))
				{
				jQuery(ordenVenta).find("input[name='logotipo']").hide();
				jQuery(ordenVenta).find("input[name='logotipo_fantasia']").show();
                                jQuery(ordenVenta).find("input[name='identificador']").val(jQuery(ordenVenta).find("input[name='fantasiaCheck']").val());
                            }
			else{
				jQuery(ordenVenta).find("input[name='logotipo']").show();
				jQuery(ordenVenta).find("input[name='logotipo_fantasia']").hide();
				jQuery(ordenVenta).find("input[name='identificador']").val('');
                            }
			});

		jQuery(ordenVenta).find("input[name='fantasia']").change();
		}

	// Al cambiar la linea se muestran los formatos, manijas y los tipos de papel que corresponden.
	jQuery(ordenVenta).find("select[name='linea']").change(function()
		{
		var lineaId = jQuery(this).val();
                jQuery(ordenVenta).find("input[name='ot1_identificador']").val('');

                jQuery(ordenVenta).find("select.formato").hide();
		jQuery(ordenVenta).find("select.formato[data-lineaId='"+lineaId+"']").show();

		jQuery(ordenVenta).find("select.manija").hide();
		jQuery(ordenVenta).find("select[name='manija_"+lineaId+"']").show();

		jQuery(ordenVenta).find("select.tipo_papel").hide();
		jQuery(ordenVenta).find("select[name='tipo_papel_"+lineaId+"']").show();

		jQuery("td.fechas_posibles").children().remove();
		});
	jQuery(ordenVenta).find("select[name='linea']").change();

	// Se eliminan las estimaciones cuando la cantidad de colores, el interior, el barniz o la laca uv.
        jQuery(ordenVenta).find("select[name='cantidad_colores']").change(function()
		{jQuery("td.fechas_posibles").children().remove();});
	jQuery(ordenVenta).find("select[name='interior']").change(function()
		{jQuery("td.fechas_posibles").children().remove();});
	jQuery(ordenVenta).find("select[name='barniz']").change(function()
		{jQuery("td.fechas_posibles").children().remove();});
	jQuery(ordenVenta).find("select[name='laca_uv']").change(function()
		{jQuery("td.fechas_posibles").children().remove();});


	// ------------------------------ //
	// ----- Ã“rdenes de trabajo ----- //
	// ------------------------------ //

	// Agrego la primer orden de trabajo.
	ordenTrabajo_append("#table_abm_tbody");


	// ------------------- //
	// ----- Botones ----- //
	// ------------------- //

	// Boton 'Estimar'.
	jQuery("#form_abm button[name='estimar']").click(function()
		{
		var msj = '';

		// Valido las ordenes de trabajo.
		msj += ordenesTrabajo_validarParaEstimar("form_abm");

		if(msj.length > 0)
			{ mostrarMsj("Error", msj); }
		else
			{
			// Muestro el mensaje de carga.
			msjLoading("table_abm", true);

			// Serializo el formulario.
			var lineaId = jQuery(ordenVenta).find("select[name='linea']").val();
			var interior = jQuery(ordenVenta).find("select[name='interior']").val();
			var barniz = jQuery(ordenVenta).find("select[name='barniz']").val();
			var lacaUv = jQuery(ordenVenta).find("select[name='laca_uv']").val();
			var paisId = jQuery(ordenVenta).find("select[name='pais_id']").val();
			var cantidadColores = jQuery(ordenVenta).find("select[name='cantidad_colores']").val();
			var tipoPapel = jQuery(ordenVenta).find("select[name='tipo_papel_"+lineaId+"']").val();
			var manija = jQuery(ordenVenta).find("select[name='manija_"+lineaId+"']").val();
			var fantasia = (jQuery(ordenVenta).find("input[name='fantasia']").size() > 0)? jQuery(ordenVenta).find("input[name='fantasia']").attr("checked") : false;
			var soloImpresion = jQuery(ordenVenta).find("input[name='solo_impresion']").attr("checked") ? true : false;
                        var logotipo = (fantasia)? jQuery(ordenVenta).find("input[name='logotipo_fantasia']").val() : jQuery(ordenVenta).find("input[name='logotipo']").val();
			if(logotipo.length > 0 && logotipo.indexOf('"') > 0) { logotipo = logotipo.replace(/\"/g, '\\"'); }
			var ordenes = ordenesTrabajo_serializar("form_abm");

                        // Busco las nuevas fechas.

                            jQuery.ajax({
						type: 'POST',
						url: 'svcs/fechas-entrega.jsp',
						dataType: 'json',
						data: {'service': 'estimar-ordenes',
							   'linea_id' : lineaId,
							   'interior' : interior,
							   'barniz' : barniz,
							   'laca_uv_id' : lacaUv,
							   'cantidad_colores' : cantidadColores,
							   'tipo_papel_id' : tipoPapel,
							   'manija_id' : manija,
							   'pais_id' : paisId,
							   'fantasia' : fantasia,
							   'logotipo' : logotipo,
							   'ordenes' : ordenes,
                                                           'soloImpresion' : soloImpresion,
							   'timestamp': timestamp()},
						success: success_estimar_fechas,
						error: error_ajax
						});

			}

		return false;
		});

	// Boton 'Agregar'.
	jQuery("#button_agregar_ot").click(function()
		{
		ordenTrabajo_append("#table_abm_tbody");
		return false;
		});

	// Boton 'eliminar'.
	jQuery("#button_remover_ot").click(function()
		{
		ordenTrabajo_remove("#table_abm_tbody");
		return false;
		});

	// Boton 'Guardar'.
	jQuery("#form_abm button[name='guardar']").click(function()
		{
		var msj = '';

		// Valido la orden de venta.
                var identificador = jQuery(ordenVenta).find("input[name='identificador']").val();
		var fantasia = (jQuery(ordenVenta).find("input[name='fantasia']").size() > 0)? jQuery(ordenVenta).find("input[name='fantasia']").attr("checked") : false;
		var logotipo = (fantasia)? jQuery(ordenVenta).find("input[name='logotipo_fantasia']").val() : jQuery(ordenVenta).find("input[name='logotipo']").val();
		var pais  = jQuery(ordenVenta).find("select[name='pais_id']").val();
                var linea  = jQuery(ordenVenta).find("select[name='linea']").val();
                var lacaUv  = jQuery(ordenVenta).find("select[name='laca_uv']").val();
                var colores = jQuery(ordenVenta).find("select[name='cantidad_colores']").val();
                var barniz = jQuery(ordenVenta).find("select[name='barniz']").val();
                var interior = jQuery(ordenVenta).find("select[name='interior']").val();
                if(logotipo == null || logotipo.length == 0)
			{msj += "<strong>Orden de venta</strong><br/>Debe ingresar el logotipo.<br/><br/>";}
                if(identificador == null || identificador.length == 0)
			{msj += "<strong>Orden de venta</strong><br/>Debe ingresar el identificador para la Orden de Venta.<br/><br/>";}
                if(pais == null || pais.length == 0)
			{msj += "<strong>Orden de venta</strong><br/>Debe ingresar un paÃ­s para la Orden de Venta.<br/><br/>";}
                if(linea == null || linea.length == 0)
			{msj += "<strong>Orden de venta</strong><br/>Debe ingresar una lÃ­nea para la Orden de Venta.<br/><br/>";}
                if(lacaUv == null || lacaUv.length == 0)
			{msj += "<strong>Orden de venta</strong><br/>Debe ingresar un LacaUv para la Orden de Venta.<br/><br/>";}
                if(colores == null || colores.length == 0)
			{msj += "<strong>Orden de venta</strong><br/>Debe ingresar la cantidad de colores para la Orden de Venta.<br/><br/>";}
                if(barniz == null || barniz.length == 0)
			{msj += "<strong>Orden de venta</strong><br/>Debe ingresar si tiene barniz o no para la Orden de Venta.<br/><br/>";}
                if(interior == null || interior.length == 0)
			{msj += "<strong>Orden de venta</strong><br/>Debe ingresar si tiene interior o no para la Orden de Venta.<br/><br/>";}

		// Valido las ordenes de trabajo.
		msj += ordenesTrabajo_validar("form_abm");

		if(msj != null && msj.length > 0)
			{mostrarMsj("Error", "No se pudo realizar la operacion solicitada:<br/><br/>" + msj);}
		else
			{
			// Envio el formulario.
                        var excedidas = ordenesTrabajoExcedidas_nums();
                        jQuery("#form_abm input[name='ordenes']").val(ordenesTrabajo_nums());
                        jQuery("#form_abm input[name='ordenesExcedidas']").val(excedidas);
                        if (excedidas.length > 0 ){
                            var message = '<div>Las siguientes ordenes de trabajo tienen una fecha de entrega prometida menor a 30 días:</br>' + excedidas + '<br/>Esto no está permitido ';
                            message += ' por cuestiones de abastecimiento de materias primas. Por favor consulte si hay disponibilidad de insumos para este pedido ';
                            message += '. Si hay, puede aceptar el pedido</br>¿Desea incorporarlo de todos modos?</div>';
                            var $dialog = $(message).dialog({
                            buttons: [
                            {
                            text: "Si",
                            click: function(){
                                    jQuery("#form_abm input[name='opcionelegida']").val('1');
                                    jQuery("#form_abm input[name='accion']").val("guardar");
                                    $dialog.remove();
                                    jQuery("#form_abm").submit();
                                    return false;
                                }
                            },
                            {
                            text: "No",
                                click: function(){
                             $dialog.remove();
                                    var $dialog2 = $('<div>¿Desea enviar por mail una solicitud de autorización a compras? </div>').dialog({
                                    buttons: [
                                    {
                                        text: "Si",
                                    click: function(){
                                        jQuery("#form_abm input[name='opcionelegida']").val('2');
                                        jQuery("#form_abm input[name='accion']").val("guardar");
                                        jQuery("#form_abm").submit();
                                        $dialog2.remove();
                                        }
                                    },
                               {
                                    text: "No",
                                        click: function(){
                                        jQuery("#form_abm input[name='opcionelegida']").val('3');
                                        jQuery("#form_abm input[name='accion']").val("guardar");
                                        jQuery("#form_abm").submit();
                                        $dialog2.remove();
                                    }
                                }
                                ]});

                                }
                        }
                        ]});
                        }else{
                            jQuery("#form_abm input[name='accion']").val("guardar");
                            jQuery("#form_abm").submit();
                        }
                }

		return false;
		});
	});



function ordenVenta_ocultarFormatos()
	{
	var lineaId = jQuery(ordenVenta).find("select[name='linea']").val();
	jQuery(ordenVenta).find("select.formato").hide();
	jQuery(ordenVenta).find("select.formato[data-lineaId='"+lineaId+"']").show();
	}

function ordenVenta_getLinea()
	{ return jQuery(ordenVenta).find("select[name='linea']").val(); }

function ordenVenta_getCantidadMinima()
	{ return parseInt(jQuery(ordenVenta).find("select[name='linea'] option:selected").attr('data-cantidad_minima'), 10); }

function success_estimar_fechas(data, code, xmlHttpRequest)
	{
	// Saco el cartel de espera.
	msjLoading("table_abm",false);

	// Verifico si la operacion fue exitosa o no.
	if(data.code != '0')
		{mostrarMsj("Error",data.msj);}
	else
		{
		for(var otNum in data.fechasPosibles)
			{ ordenTrabajo_appendFechasPosibles("form_abm", otNum, data.fechasPosibles[otNum]); }
		}
	}

function error_ajax(xmlHttpRequest, type)
	{
	// Saco el cartel de espera y muestro el error.
	msjLoading("table_abm",false);
	mostrarMsj("Error","No se pudo establecer la conexiÃ³n con el servidor: " + type + " " + xmlHttpRequest.status + " (" + xmlHttpRequest.statusText + ")");
	}

// </script>